#include <iostream>
#include <vector>
#include <cstring>
#include <queue>
using namespace std;
const int N=2*1e5+10;

int h[N],to[N],ne[N],idx;
int din[N/2];
void add(int x,int y)
{
	to[idx]=y;
	ne[idx]=h[x];
	h[x]=idx++;
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n,m;
		cin>>n>>m;
		idx=0;
		vector<int> ret;
		memset(h,-1,sizeof(h));
        memset(to,0,sizeof(to));
		memset(din,0,sizeof(din));
		for(int i=0;i<m;i++)
		{
			int x,y;
			scanf("%d%d",&x,&y);
			din[y]++;
			add(x,y);
		}
		queue<int> q;
		for(int i=1;i<=n;i++)
			if(din[i]==0)
				q.push(i);
		while(q.size())
		{
			int u=q.front();
			q.pop();
			ret.push_back(u);
			for(int i=h[u];~i;i=ne[i])
			{
				int j=to[i];
				din[j]--;
				if(din[j]==0)
					q.push(j);
			}
		}
		if(ret.size()!=n)
		{
			cout<<"Impossible!"<<endl;
		}
		else{
			cout<<ret[0];
			for(int i=1;i<ret.size();i++)
			{
				cout<<' '<<ret[i];
			}
			cout<<endl;
		}
	}
	return 0;
}
